home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / euplay / getsnd.asm < prev   
Encoding:
Assembly Source File  |  1994-11-16  |  1.1 KB  |  71 lines

  1.  
  2. .386p
  3.  
  4. public getSndWork
  5. public isFast
  6. public modeSwitch
  7.  
  8. cseg        segment    dword 'code'
  9. CGROUP        group    cseg
  10.             assume    cs:CGROUP,ds:CGROUP,ss:CGROUP,fs:CGROUP
  11.  
  12. ROM_CSEG    equ        110h
  13. SND_WORK    equ        98h
  14.  
  15. ; サウンドワークの取得
  16. ; unsigned char *getSndWork(void);
  17. ; [戻り値]サウンドワークへのポインタ
  18. ; [引数]  なし
  19. getSndWork    proc
  20.             push    fs
  21.             push    gs
  22.             push    edi
  23.             
  24.             push    dword ptr ROM_CSEG        ; fs=ROM_CSEG
  25.             pop        fs
  26.             lgs        edi,pword ptr fs:[SND_WORK]
  27.             mov        eax,edi
  28.             
  29.             pop        edi
  30.             pop        gs
  31.             pop        fs
  32.             ret
  33. getSndWork    endp
  34.  
  35. ; 動作モードの状態
  36. ; int isFast(void);
  37. ; [戻り値]0h:互換モード
  38. ;           1h:高速モード
  39. ;           80h:動作モードが存在しない
  40. ; [引数]  なし
  41. isFast        proc
  42.             xor        eax,eax
  43.             mov        ah,9
  44.             int        0afh
  45.             ret
  46. isFast        endp
  47.  
  48. ; 動作モードの切り換え
  49. ; void modeSwitch(int mode);
  50. ; [戻り値]なし
  51. ; [引数]  mode  0:互換モード
  52. ;                 1:高速モード
  53. modeSwitch    proc
  54. #mode        equ        8
  55.             
  56.             push    ebp
  57.             mov        ebp,esp
  58.             
  59.             mov        al,[ebp].#mode
  60.             mov        ah,8
  61.             int        0afh
  62.             
  63.             mov        esp,ebp
  64.             pop        ebp
  65.             ret
  66. modeSwitch    endp
  67.  
  68. cseg        ends
  69.             end
  70.  
  71.